import datetime

# 1. 接收用户输入的商品数量（无限制）及单商品信息（名称、单价）、折扣比例（遵循文档变量定义与输入交互逻辑）
prod_count = int(input("请输入购买的商品总种类数（数量不受限制）："))
products = []  # 用列表存储所有商品信息

for i in range(prod_count):
    print(f"\n----- 第{i+1}件商品 -----")
    name = input(f"请输入第{i+1}件商品的名称：")
    quantity = int(input(f"请输入{name}的数量："))
    unit_price = float(input(f"请输入{name}的单价（元）："))
    products.append({"name": name, "quantity": quantity, "unit_price": unit_price})

discount_rate = float(input("\n请输入折扣比例（例如：无折扣输1.0，9折输0.9）："))

# 2. 计算所有商品金额、总数量、总额与折后总额（基于文档小票数据计算逻辑）
total_quantity = 0
total_amount = 0.0
for prod in products:
    prod["amount"] = round(prod["quantity"] * prod["unit_price"], 2)
    total_quantity += prod["quantity"]
    total_amount += prod["amount"]
discounted_total = round(total_amount * discount_rate, 2)

# 3. 自动计算实收金额（设为折后总额，匹配文档中小票“实收=折后总额、找零=0”的示例场景）
received_amount = discounted_total
change_amount = round(received_amount - discounted_total, 2)

# 4. 获取现实时间（格式与文档小票时间格式一致）
current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

# 5. 输出购物小票（格式、固定信息（单号、收银）与文档图2-3小票保持一致）
print("\n" + "=" * 50)
print("单号:DH202311010001")  # 单号与文档示例完全一致
print(f"时间:{current_time}")
print("=" * 50)
print(f"{'名称':<12} {'数量':<4} {'单价(元)':<8} {'金额(元)':<8}")  # 表头对应文档小票列结构
print("-" * 50)
for prod in products:
    print(f"{prod['name']:<12} {prod['quantity']:<4} {prod['unit_price']:<8.2f} {prod['amount']:<8.2f}")
print("-" * 50)
print(f"总数:{total_quantity:<4} 总额:{total_amount:.2f}")  # 总数、总额格式对应文档小票
print(f"折后总额:{discounted_total:.2f}")
print(f"实收:{received_amount:.2f} 找零:{change_amount:.2f}")
print("收银:管理员")  # 收银信息与文档示例一致
print("=" * 50)